#include <bits/stdc++.h>
using namespace std;

const long long N = 2000000; // 定义坐标范围

// 定义结构体 Point
struct Point {
    long long x; // 坐标
    long long w; // 权值
};

Point points[100000]; // 存储点的坐标和权值
long long countTree[2000001], sumTree[2000001]; // 树状数组，用于存储计数和权值和
long long n; // 点的数量

// 获取最低有效位
long long getLowBit(long long x) {
    return x & (-x);
}

// 更新树状数组
void updateTree(long long index, long long value) {
    while (index <= N) {
        countTree[index] += 1; // 更新计数
        sumTree[index] += value; // 更新权值和
        index += getLowBit(index); // 移动到下一个节点
    }
}

// 查询权值和
long long querySum(long long index) {
    long long result = 0;
    while (index) {
        result += sumTree[index]; // 累加权值和
        index -= getLowBit(index); // 移动到父节点
    }
    return result;
}

// 查询计数
long long queryCount(long long index) {
    long long result = 0;
    while (index) {
        result += countTree[index]; // 累加计数
        index -= getLowBit(index); // 移动到父节点
    }
    return result;
}

int main() {
    scanf("%lld", &n); // 读取点的数量
    for (long long i = 0; i < n; i++) {
        scanf("%lld%lld", &points[i].x, &points[i].w); // 读取坐标和权值
    }

    // 将坐标偏移以避免负值
    for (long long i = 0; i < n; i++) {
        points[i].x += 1000000; // 偏移坐标
    }

    // 按权值升序排序
    sort(points, points + n, [](const Point &a, const Point &b) {
        return a.w < b.w; // 按权值排序
    });

    long long totalEffect = 0; // 存储最终结果

    // 遍历每个点
    for (long long i = 0; i < n; i++) {
        // 查询当前点之前的点的计数和权值和
        long long countLeft = queryCount(points[i].x - 1);
        long long sumLeft = querySum(points[i].x - 1);

        // 计算当前点对前面所有点的作用效应
        totalEffect += (countLeft * points[i].x - sumLeft) * points[i].w;

        // 查询当前点之后的点的计数和权值和
        long long countRight = queryCount(N) - queryCount(points[i].x);
        long long sumRight = querySum(N) - querySum(points[i].x);

        // 计算当前点对后面所有点的作用效应
        totalEffect += (sumRight - countRight * points[i].x) * points[i].w;

        // 更新树状数组
        updateTree(points[i].x, points[i].x);
    }

    cout << totalEffect << endl; // 输出最终结果
    return 0;
}
